home *** CD-ROM | disk | FTP | other *** search
/ Mission 3 / Mission 3.zip / Mission 3.iso / zugabe / va45 / visual45 / visual45.s < prev   
Text File  |  1998-09-06  |  28KB  |  853 lines

  1. *--------------------------------------------------------------------------*
  2.  
  3.     opt o+,ow-
  4.  
  5.     include verify.s
  6.  
  7.     include bios.i
  8.     include xbios.i
  9.     include gemdos.i
  10.  
  11.     ifd MDL_GEM
  12.     include gemmacro.i
  13.     endc
  14.  
  15.     include syst_cte.s
  16.     include gwva_cte.s
  17.     include lib_cte.s
  18.     include syst_def.s
  19.     include gwva_def.s
  20.     include lib_def.s
  21.     include gwva_sys.mac
  22.     include objstruc.mac
  23.     include objextd.mac
  24.  
  25. *--------------------------------------------------------------------------*
  26. *--------------------------------------------------------------------------*
  27. *--------------------------------------------------------------------------*
  28. *---------------------       DEBUT CODE VISUAL        ---------------------*
  29. *--------------------------------------------------------------------------*
  30. *--------------------------------------------------------------------------*
  31. *--------------------------------------------------------------------------*
  32.  
  33.     TEXT
  34.  
  35. VISUAL_START:
  36.     move.l a1,GWVA_ROOT_PTR_WAPP
  37.  
  38.     ifd MDL_GEM
  39.     moveq #0,d1
  40.     move.l a0,d0
  41.     bne.s .acc
  42.     moveq #1,d1
  43.     endc    ; ifd MDL_GEM
  44.     move.l 4(sp),a5
  45.     move.l a5,GWVA_ROOT_BASE_PAGE
  46. .acc:
  47.     ifd MDL_GEM
  48.     move.w d1,GWVA_ROOT_IS_ACC_PRG
  49.     endc    ; ifd MDL_GEM
  50.  
  51.     lea GWVA_ROOT_STACK,sp
  52.     move.l sp,GWVA_ROOT_STACK_SAVE_CMP_PTR
  53.  
  54.     clr.w GWVA_ROOT_CMD_LINE_SIZE    ; 0 si acc
  55.  
  56.     ifd MDL_GEM
  57.     tst GWVA_ROOT_IS_ACC_PRG
  58.     beq.s .acc_pas_de_cmd_line
  59.     endc    ; ifd MDL_GEM
  60.  
  61.     clr.w d0
  62.     add.b p_cmdlin(a5),d0
  63.     move.w d0,GWVA_ROOT_CMD_LINE_SIZE
  64.     lea p_cmdlin+1(a5),a0
  65.     move.l a0,GWVA_ROOT_CMD_LINE_PTR
  66.  
  67.     ifd OPT_GWVA_ROOT_ARGV
  68.  
  69.     cmp.w #127,d0
  70.     bne.s .pas_de_argv_necessaire
  71.  
  72.     move.l p_env(a5),a0
  73. .pas_fin_environement1:
  74.     tst.b (a0)
  75.     beq.s .fin_chaine_environement
  76. .pas_fin_environement2:
  77.     cmp.l #'ARGV',(a0)
  78.     bne.s .recherche_ARGV
  79.     cmp.b #'=',4(a0)
  80.     bne.s .recherche_ARGV
  81.  
  82.     lea 5(a0),a0
  83.     STOP_ON_0 a0
  84.     lea 1(a0),a0    ; argv[0] : nom du process
  85.     STOP_ON_0 a0
  86.     lea 1(a0),a0
  87.     move.l a0,GWVA_ROOT_CMD_LINE_PTR
  88.     moveq #-1,d0
  89. .recherche_fin_argument:
  90.     addq.w #1,d0
  91.     tst.b (a0)+
  92.     bne.s .recherche_fin_argument
  93.     tst.b (a0)+
  94.     beq.s .fin_recherche_arguments
  95.     move.b #' ',-2(a0)
  96.     addq.w #1,d0
  97.     bra.s .recherche_fin_argument
  98. .fin_recherche_arguments:
  99.     move.w d0,GWVA_ROOT_CMD_LINE_SIZE
  100.     bra.s .fin_recherche_ARGV
  101. .recherche_ARGV:
  102.     STOP_ON_0 a0
  103. .fin_chaine_environement:
  104.     lea 1(a0),a0
  105.     tst.b (a0)
  106.     bne.s .pas_fin_environement2
  107.  
  108.     move.w #125,GWVA_ROOT_CMD_LINE_SIZE    ; taille maxi de la chaine
  109. .fin_recherche_ARGV:
  110. .pas_de_argv_necessaire:
  111.  
  112.     endc    ;    ifd OPT_GWVA_ROOT_ARGV
  113.  
  114. .acc_pas_de_cmd_line:
  115.  
  116.     ;-----------------------------------;
  117.  
  118.     ; tos+lecteur+selectrix+copro+Mint+Magic+Geneva
  119.     SUPEXEC GWVA_ROOT_PRG_SEARCH_SYSTEM_VARIABLES_AND_COOKIES
  120.  
  121. ; Le DTA est dans la page de base pour les programmes, mais on le redéfinit
  122. ; par sureté (VFAT)
  123.     FSETDTA GWVA_ROOT_DTA
  124.  
  125.     lea GWVA_ROOT_STARTED_PATH,a0
  126.     bsr GWVA_ROOT_PRG_STORE_CURRENT_PATH
  127.  
  128.     ;-----------------------------------;
  129.  
  130.     move.l GWVA_ROOT_PTR_WAPP,a0
  131.  
  132.     cmp.w #GWVA_CLASS_WIND.APP,GWVA_OBJ_CLASS(a0)
  133.     bne GWVA_NOT_WAPP
  134.  
  135.     bsr GWVA_ROOT_CREATE_OBJECT
  136.     cmp.w #GWVA_ERROR_ROOT_INIT_METHOD_LIST,d7
  137.     beq GWVA_ERROR_BEFORE_CREATE_WAPP
  138.     cmp.w #GWVA_NO_ERROR_GENERIC,d7
  139.     bne GWVA_ERROR_CREATE
  140.  
  141.     ifd MDL_WIND_MENU
  142.     save.l a0
  143.     bsr GWVA_ROOT_PRG_MENU_FIX_OBJECT_ARROW    ; à besoin des informations de la station physique
  144.     load.l a0
  145.     endc
  146.  
  147.     clr.w GWVA_ROOT_RETURN_CODE
  148.  
  149.     ifd MDL_GEM
  150.  
  151.     tst GWVA_ROOT_IS_ACC_PRG
  152.     beq.s .acc_pas_ouverture
  153.     endc    ; ifd MDL_GEM
  154.  
  155.     GWVA_CALL_METHOD_OTHER_OBJ    #GWVA_METHOD_OPEN
  156.     cmp.w #GWVA_NO_ERROR_GENERIC,d7
  157.     bne GWVA_BRANCH_IF_OPEN_WORKSTATION_FAILED
  158. .acc_pas_ouverture:
  159.  
  160. *--------------------------------------------------------------------------*
  161. *--------------------------------------------------------------------------*
  162. *--------------------------------------------------------------------------*
  163. *------------------    CODE SPECIFIQUE AUX EVENEMENTS   -------------------*
  164. *--------------------------------------------------------------------------*
  165. *--------------------------------------------------------------------------*
  166. *--------------------------------------------------------------------------*
  167.  
  168.     ifd MDL_EVENTS
  169.  
  170.     clr.w GWVA_ROOT_EVENT_BITS
  171.  
  172. ; Par défaut, c'est l'objet application qui reçoit les évènements clavier, click et message
  173.  
  174.     move.l GWVA_ROOT_PTR_WAPP,GWVA_ROOT_KEYPRESS_OBJ_PTR
  175.     move.l GWVA_ROOT_PTR_WAPP,GWVA_ROOT_CLICK_OBJ_PTR
  176.     move.l #GWVA_METHOD_CLICK,GWVA_ROOT_CLICK_METHOD
  177.     move.l GWVA_ROOT_PTR_WAPP,GWVA_ROOT_MESSAGE_OBJ_PTR
  178.  
  179. GWVA_MAIN_EVENTS_LOOP:
  180.     cmp.l GWVA_ROOT_STACK_SAVE_CMP_PTR,sp
  181.     beq.s .no_stack_slide
  182.  
  183.     move.l sp,GWVA_ROOT_STACK_SAVE_CMP_PTR
  184.     lea GWVA_ROOT_ALERT_STACK_SLIDING,a0
  185.     move #1,d0
  186.     bsr GWVA_ROOT_PRG_ALERT_BOX
  187. .no_stack_slide:
  188.  
  189.     tst.w GWVA_ROOT_EVENT_BITS
  190.     bne .old_evnt_waiting
  191.  
  192.     clr d0
  193.  
  194.     bset #EVNT_KEYBD,d0
  195.     bset #EVNT_BUTTON,d0
  196.     bset #EVNT_MESAG,d0
  197.  
  198.     ifge GWVA_ROOT_CTE_MAX_MOUSEZONE-1
  199.  
  200.     save.w d0
  201.     bsr GWVA_ROOT_ELABORATE_MOUSE_ZONES    ; => GWVA_ROOT_M1_ACTIVATED, GWVA_ROOT_M2_ACTIVATED
  202.     load.w d0
  203.  
  204.     tst.w GWVA_ROOT_M1_ACTIVATED
  205.     beq.s .pas_evnt_mouse1
  206.  
  207.     bset #EVNT_MOUSE1,d0
  208. .pas_evnt_mouse1:
  209.  
  210.     tst.w GWVA_ROOT_M2_ACTIVATED
  211.     beq.s .pas_evnt_mouse2
  212.  
  213.     bset #EVNT_MOUSE2,d0
  214. .pas_evnt_mouse2:
  215.  
  216.     endc    ; ifge GWVA_ROOT_CTE_MAX_MOUSEZONE-1
  217.  
  218.     ifge GWVA_ROOT_CTE_MAX_TIMER-1
  219.     save.w d0
  220.     bsr GWVA_ROOT_ELABORATE_TIMER_AND_EXEC_METHOD    ; => GWVA_ROOT_TIMER_COUNT
  221.     load.w d0
  222.     tst.l GWVA_ROOT_TIMER_COUNT
  223.     beq.s .no_timer
  224.     bset #EVNT_TIMER,d0
  225. .no_timer:
  226.     endc    ; ifge GWVA_ROOT_CTE_MAX_TIMER-1
  227.  
  228.     ; #2,#3,#3
  229.     evnt_multi d0,
  230. &    #$102,#$3,#$0,
  231. &    GWVA_ROOT_M1FLAG,GWVA_ROOT_M1X,GWVA_ROOT_M1Y,GWVA_ROOT_M1W,GWVA_ROOT_M1H,
  232. &    GWVA_ROOT_M2FLAG,GWVA_ROOT_M2X,GWVA_ROOT_M2Y,GWVA_ROOT_M2W,GWVA_ROOT_M2H,
  233. &    #GWVA_ROOT_MSG_BUF,
  234. &    GWVA_ROOT_TIMER_COUNT
  235.  
  236.             ******************
  237.  
  238.     move.w d0,GWVA_ROOT_EVENT_BITS
  239.  
  240.     move.l int_out+2,GWVA_ROOT_EVNT_MULTI_MX
  241.     move.l int_out+6,GWVA_ROOT_EVNT_MULTI_MB
  242.     move.l int_out+10,GWVA_ROOT_EVNT_MULTI_KC
  243.  
  244. .old_evnt_waiting:
  245.     move.w GWVA_ROOT_EVENT_BITS,d0
  246.  
  247. ; L'evnt_mesag doit etre traité en premier car il peut informer d'un changement systeme
  248. ; dont il faut que les routines suivantes soient averties.
  249.  
  250.             ******************
  251.  
  252.     btst #EVNT_MESAG,d0
  253.     beq .pas_evenement_message
  254.  
  255. .new_message:
  256.     lea 0,a2            ; par défaut : pas de buffer étendu
  257.  
  258.     tst.w GWVA_ROOT_MSG_BUF+bmsg_extd    ; message étendu ? (+ de 16 octets)
  259.     beq.s .pas_lecture_buffer_message_etendu
  260.  
  261. ; Il faut absolument lire le reste du message s'il est présent ; sinon
  262. ; cela crée un faux évènement MESSAGE GEM.
  263.     appl_read global+_AESapid,GWVA_ROOT_MSG_BUF+bmsg_extd,#GWVA_ROOT_MSG_EXT_BUF
  264.     lea GWVA_ROOT_MSG_EXT_BUF,a2
  265. .pas_lecture_buffer_message_etendu:
  266.  
  267.     move.l GWVA_ROOT_MESSAGE_OBJ_PTR,a0
  268.     move.l GWVA_ROOT_PTR_WAPP,GWVA_ROOT_MESSAGE_OBJ_PTR
  269.  
  270.     lea GWVA_ROOT_MSG_BUF,a1
  271.     ; a2 initialisé
  272.     move.w bmsg_msgid(a1),d0    ; numéro du message GEM
  273.     GWVA_CALL_METHOD_OTHER_OBJ    #GWVA_METHOD_MESSAGE
  274.  
  275. ; On va tester s'il reste des messages a traiter dans la buffer.
  276. ; Pour sortir de l'evnt_multi, on utilise l'evenement timer
  277.     evnt_multi #$10+$20,
  278. &    #0,#0,#0,
  279. &    #0,#0,#0,#0,#0,
  280. &    #0,#0,#0,#0,#0,
  281. &    #GWVA_ROOT_MSG_BUF,
  282. &    #1
  283.  
  284.     btst #EVNT_MESAG,d0
  285.     bne .new_message    ; il y a un message en attente -> on se rappelle
  286.  
  287.     move #EVNT_MESAG,d0
  288.     bsr GWVA_ROOT_PRG_CLEAR_EVNT_BIT
  289.  
  290.     bra GWVA_MAIN_EVENTS_LOOP
  291.  
  292. .pas_evenement_message:
  293.  
  294.             ******************
  295.  
  296.     ifge GWVA_ROOT_CTE_MAX_TIMER-1
  297.  
  298.     btst #EVNT_TIMER,d0
  299.     beq.s .pas_evenement_timer
  300.  
  301.     move #EVNT_TIMER,d0        ; tout est traité avent l'evnt_multi
  302.     bsr GWVA_ROOT_PRG_CLEAR_EVNT_BIT
  303.  
  304.     bra GWVA_MAIN_EVENTS_LOOP
  305. .pas_evenement_timer:
  306.  
  307.     endc    ; ifge GWVA_ROOT_CTE_MAX_TIMER-1
  308.  
  309.             ******************
  310.  
  311.     btst #EVNT_BUTTON,d0
  312.     beq.s .pas_evenement_bouton
  313.  
  314.     move.w GWVA_ROOT_EVNT_MULTI_MX,d0    ; position souris
  315.     move.w GWVA_ROOT_EVNT_MULTI_MB,d1    ; état des boutons souris
  316.     swap d1
  317.     move.w GWVA_ROOT_EVNT_MULTI_MY,d1    ; position souris
  318.     move.w GWVA_ROOT_EVNT_MULTI_KS,d2    ; état des touches spéciales
  319.     swap d2
  320.     move.w GWVA_ROOT_EVNT_MULTI_MC,d2    ; nbre de clik souris
  321.  
  322.     move.l GWVA_ROOT_CLICK_OBJ_PTR,a0
  323.     move.l GWVA_ROOT_CLICK_METHOD,d3
  324.  
  325.     save.l d3/a0
  326.     bsr GWVA_ROOT_UNREGISTER_BUTTON
  327.     load.l d3/a0
  328.  
  329.     GWVA_CALL_METHOD_OTHER_OBJ    d3
  330.  
  331.     move #EVNT_BUTTON,d0
  332.     bsr GWVA_ROOT_PRG_CLEAR_EVNT_BIT
  333.  
  334.     bra GWVA_MAIN_EVENTS_LOOP
  335.  
  336. .pas_evenement_bouton:
  337.  
  338.             ******************
  339.  
  340.     ifge GWVA_ROOT_CTE_MAX_MOUSEZONE-1
  341.  
  342.     btst #EVNT_MOUSE1,d0
  343.     beq.s .pas_evenement_mouse_zone1
  344.     move.w d0,d2
  345.     move.w GWVA_ROOT_EVNT_MULTI_MX,d0    ; position souris
  346.     move.w GWVA_ROOT_EVNT_MULTI_MY,d1    ; position souris
  347.     bsr GWVA_ROOT_EXECUTE_MOUSE_ZONES_METHODES
  348.     move #EVNT_MOUSE1,d0
  349.     bsr GWVA_ROOT_PRG_CLEAR_EVNT_BIT
  350.     bra GWVA_MAIN_EVENTS_LOOP
  351. .pas_evenement_mouse_zone1:
  352.     btst #EVNT_MOUSE2,d0
  353.     beq.s .pas_evenement_mouse_zone2
  354.     move.w d0,d2
  355.     move.w GWVA_ROOT_EVNT_MULTI_MX,d0    ; position souris
  356.     move.w GWVA_ROOT_EVNT_MULTI_MY,d1    ; position souris
  357.     bsr GWVA_ROOT_EXECUTE_MOUSE_ZONES_METHODES
  358.     move #EVNT_MOUSE2,d0
  359.     bsr GWVA_ROOT_PRG_CLEAR_EVNT_BIT
  360.     bra GWVA_MAIN_EVENTS_LOOP
  361. .pas_evenement_mouse_zone2:
  362.  
  363.     endc    ; ifge GWVA_ROOT_CTE_MAX_MOUSEZONE-1
  364.  
  365.             ******************
  366.  
  367.     btst #EVNT_KEYBD,d0    ; doit être après le button : car on transforme un evnt_keyb en evnt_but
  368.     beq.s .pas_evenement_keyb
  369.  
  370.     move.l GWVA_ROOT_KEYPRESS_OBJ_PTR,a0
  371.     move.l GWVA_ROOT_PTR_WAPP,GWVA_ROOT_KEYPRESS_OBJ_PTR    ; on remet l'objet APP par défaut
  372.  
  373.     move.w GWVA_ROOT_EVNT_MULTI_KC,d0    ; touche
  374.     move.w GWVA_ROOT_EVNT_MULTI_KS,d1    ; état des touches spéciales
  375.  
  376.     ; Pour cette méthode KEYPRESS, un check des shortcuts de l'objet a lieu
  377.     ; automatiquement dans le SEARCH_EXEC juste avant.
  378.     GWVA_CALL_METHOD_OTHER_OBJ    #GWVA_METHOD_KEYPRESS
  379.  
  380.     move #EVNT_KEYBD,d0
  381.     bsr GWVA_ROOT_PRG_CLEAR_EVNT_BIT
  382.  
  383.     bra GWVA_MAIN_EVENTS_LOOP
  384.  
  385. .pas_evenement_keyb:
  386.     illegal        ; du délire : un évènement pas prévu
  387. *    bra GWVA_MAIN_EVENTS_LOOP
  388.  
  389.     endc    ; ifd MDL_EVENTS
  390.  
  391. _VISUAL_END:
  392.     move.l GWVA_ROOT_PTR_WAPP,a0
  393.     GWVA_CALL_METHOD_OTHER_OBJ    #GWVA_METHOD_CLOSE
  394.     moveq #GWVA_NO_ERROR_GENERIC,d7
  395.  
  396. GWVA_BRANCH_IF_OPEN_WORKSTATION_FAILED:
  397. GWVA_BRANCH_IF_RSC_LOAD_FAILED:
  398. GWVA_BRANCH_IF_APPL_INIT_FAILED:
  399.  
  400.     move.w d7,d0
  401.     GWVA_CALL_METHOD_OTHER_OBJ    #GWVA_METHOD_DELETE
  402.  
  403.     GWVA_PROGRAMMER_ERROR    GWVA_ASCII_ERROR_NO_DELETED
  404.  
  405. GWVA_ERROR_CREATE:
  406.     cmp.w #GWVA_ERROR_WAPP_INIT_FAILED,d7
  407.     beq.s GWVA_BRANCH_IF_APPL_INIT_FAILED
  408.     cmp.w #GWVA_ERROR_WAPP_RSC_LOAD_FAILED,d7
  409.     bne.s gwva_no_rsc_error
  410.  
  411.     ifd MDL_EVENTS
  412.  
  413. ; erreur au chargement du ressource en accessoire
  414.  
  415.     tst GWVA_ROOT_IS_ACC_PRG
  416.     bne.s GWVA_BRANCH_IF_RSC_LOAD_FAILED
  417. GWVA_INFINITE_LOOP:
  418.     evnt_mesag #GWVA_ROOT_MSG_BUF
  419.     bra.s GWVA_INFINITE_LOOP
  420.  
  421.     endc    ; MDL_EVENTS
  422. gwva_no_rsc_error:
  423.     GWVA_PROGRAMMER_ERROR GWVA_ASCI_ERROR_CREATE_RETURN
  424.  
  425. GWVA_ERROR_BEFORE_CREATE_WAPP:
  426. GWVA_NOT_WAPP:
  427.     illegal        ; on ne peut rien faire d'autre ... (meme pas appeler le DELETE)
  428.  
  429. *--------------------------------------------------------------------------*
  430.  
  431.     include objects\wind\wapp.s
  432.     include objects\root.s
  433.     include objects\srchexec.s
  434.     include library\extend\library.s
  435.     include library\extend\file.s
  436.  
  437.     ifd LIB_COLOR
  438.     include library\extend\color.s
  439.     endc    ; ifd LIB_COLOR
  440.  
  441.     ifd LIB_COOKIE
  442.     include library\extend\cookie.s
  443.     endc    ; ifd LIB_COOKIE
  444.  
  445.     ifd LIB_XBRA
  446.     include library\extend\xbra.s
  447.     endc    ; ifd LIB_XBRA
  448.  
  449.     ifd MDL_GEM
  450.  
  451.     include library\extend\rsc.s    ; si MDL_TOS : pas rsc
  452.     ifd LIB_MULTI_RSC
  453.     include library\extend\multirsc.s
  454.     endc    ; ifd LIB_MULTI_RSC
  455.  
  456.     ifd LIB_FSEL_BSS_FORM
  457.     include library\extend\fsel_upd.s
  458.     endc    ; ifd LIB_FSEL_BSS_FORM
  459.  
  460.     ifd LIB_FILESELECTOR
  461.     include library\extend\file_sel.s
  462.     endc    ; ifd LIB_FILESELECTOR
  463.  
  464.     ifd MDL_EVENTS
  465.     include objects\wind\w_method.s    ; une seule méthode est active (KEYPRESS) si pas de MDL_WIND
  466.  
  467.     ifd MDL_MENU
  468.     include objects\menu.s
  469.     ifd LIB_MENU
  470.     include library\extend\menu.s
  471.     endc    ; ifd LIB_MENU
  472.     endc    ; ifd MDL_MENU
  473.     
  474.     ifd MDL_WIND
  475.     include objects\wind\wind_lib.s
  476.     include objects\wind\w_cr_del.s
  477. *    include objects\wind\wsliders.s
  478.  
  479.     ifd MDL_WIND_BITMAP
  480.     include objects\wind\wbitmap.s
  481.     endc    ; ifd MDL_WIND_BITMAP
  482.  
  483.     ifd MDL_WIND_TEXT
  484.     include objects\wind\wtext.s
  485.     endc    ; ifd MDL_WIND_TEXT
  486.  
  487.     ifd MDL_WIND_RSC
  488.     include objects\wind\wrsc.s
  489.  
  490.     ifd MDL_WIND_RSC_POPUP
  491.     include objects\wind\wrscpop.s
  492.     endc    ; ifd MDL_WIND_RSCPOPUP
  493.  
  494.     ifd MDL_WIND_FORM
  495.     include objects\wind\wform.s
  496.     include objects\form\common.s
  497.  
  498.     ifd PATCH_GWVA_WFORM_CUSTOM_EDITABLE_TEXT
  499.     include library\extend\objcedit.s
  500.     endc
  501.  
  502.     ifd MDL_FORM_BUTTON
  503.     include objects\form\button.s    ; objet cliquable de base : le bouton
  504.     endc    ; ifd MDL_FORM_BUTTON
  505.  
  506.     ifd MDL_FORM_PROGRESS
  507.     include objects\form\prog_bar.s    ; objet progress bar
  508.     endc    ; ifd MDL_FORM_PROGRESS
  509.  
  510.     ifd MDL_FORM_MENU_POPUP
  511.     include objects\form\menu_pop.s    ; objet menu popup
  512.     endc    ; ifd MDL_FORM_MENU_POPUP
  513.  
  514.     ifd MDL_FORM_RADIO_BUTTON
  515.     include objects\form\radio_bt.s    ; objet radio bouton
  516.     endc    ; ifd MDL_FORM_RADIO_BUTTON
  517.  
  518.     ifd MDL_FORM_CLICK_EQUIV
  519.     include objects\form\click_eq.s    ; objet click equivalent
  520.     endc    ; ifd MDL_FORM_CLICK_EQUIV
  521.  
  522.     ifd MDL_FORM_TEXT
  523.     include objects\form\text.s    ; objet text (éditable ou pas)
  524.     endc    ; ifd MDL_FORM_TEXT
  525.  
  526.     ifd MDL_FORM_SLIDER
  527.     include objects\form\slider.s    ; objet slider
  528.     endc    ; ifd MDL_FORM_SLIDER
  529.  
  530.     ifd MDL_FORM_CHAINED_TEXT
  531.     include objects\form\chaintxt.s    ; objet textes chainés
  532.     endc    ; ifd MDL_FORM_CHAINED_TEXT
  533.  
  534.     endc    ; ifd MDL_WIND_FORM
  535.     endc    ; ifd MDL_WIND_RSC
  536.     endc    ; ifd MDL_WIND
  537.     endc    ; ifd MDL_EVENTS
  538.  
  539.     include aeslib.s
  540.     include vdilib.s
  541.     endc    ; ifd MDL_GEM
  542.  TEXT
  543.  
  544. VISUAL_END:    jmp _VISUAL_END
  545.  
  546. *--------------------------------------------------------------------------*
  547.  
  548.     DATA
  549.  
  550. GWVA_ROOT_RETURN_CODE:        dc.w -1
  551.  
  552. GWVA_ROOT_HANDLE_COUNTER:    dc.w GWVA_OBJ_CTE_HANDLE_UNDEF+1
  553.  
  554. GWVA_ROOT_COPYRIGHT_MESSAGE:    dc.b 'Written in Visual Assembler 4.5 © Gen & Wax 1996,97,98',0
  555. GWVA_ROOT_VISUAL_VERSION:    dc.b '4500',0
  556. GWVA_ROOT_REGISTER_STRING:    dc.b 'RN : UNREGISTERED version for FREEWARE programs',0
  557. *GWVA_ROOT_REGISTER_STRING:    dc.b 'RN : 3AeKNlEhzFxzXFz0ADbWBlC4q',0    ; wax
  558. *GWVA_ROOT_REGISTER_STRING:    dc.b 'RN : 32Vs09OiKfJK8fKPy2MDg7kXre',0    ; gen
  559. *GWVA_ROOT_REGISTER_STRING:    dc.b 'RN : 139ECupWDk2DvkDg3eHeV5F1lw',0    ; rod
  560. *GWVA_ROOT_REGISTER_STRING:    dc.b 'RN : 33uqhbZ8PKePxKPizXO3XbBjPs',0    ; eric
  561. *GWVA_ROOT_REGISTER_STRING:    dc.b 'RN : 1FDduiIoTmdTpmTSuJf0ZiPh8RE11',0    ; Centek
  562.  
  563.     ; The label GWVA_APP_OBJ_REGISTER_MESSAGE must point on to a
  564.     ; string 'RN : ' followed by your full registration string
  565.     ; if you intend to earn money with your program (SHAREWARE or SOLD)
  566.  
  567.     ; Le label GWVA_APP_OBJ_REGISTER_MESSAGE doit pointer sur une
  568.     ; chaine 'RN : ' suivie de votre numéro d'enregistrement complet
  569.     ; si vous diffusez un produit qui doit vous rapporter de l'argent
  570.     ; (SHAREWARE ou VENDU)
  571.  
  572.     ifd MDL_GEM
  573.             ; 31 charactères maximum sur 5 lignes
  574.             ;     [1234567890123456789012345678901]
  575. GWVA_ROOT_ALERT_STACK_OVERFLOW:    dc.b '[3]'
  576.             dc.b '[ * Visual-Asm kernel Warning * '
  577.             dc.b '|         - - - - - - -         '
  578.             dc.b '| A stack OVERFLOW occured, this'
  579.             dc.b '| may cause an error. Conctact  '
  580.             dc.b '| the programmer for resizing it]'
  581.             dc.b '[Continue]'
  582.             dc.b 0
  583.  
  584.     endc    ; ifd MDL_GEM
  585.  
  586.     ifd MDL_EVENTS
  587.  
  588. GWVA_ROOT_ALERT_STACK_SLIDING:    dc.b '[3]'
  589.             dc.b '[ * Visual-Asm kernel Warning * '
  590.             dc.b '|         - - - - - - -         '
  591.             dc.b '| A stack SLIDING occured, this '
  592.             dc.b '| may cause errors if it happens'
  593.             dc.b '| several times. This is a bug !]'
  594.             dc.b '[Continue|Contact|Author]'
  595.             dc.b 0
  596.  
  597.     endc    ; ifd MDL_EVENTS
  598.  
  599.     ifd OPT_GWVA_DEBUG_ERROR
  600. *GWVA_ASCII_ERROR_HANDLE_EXISTS:    dc.b 'You are trying to allocate an handle to an object which already has one.',0
  601. GWVA_ASCII_ERROR_RETURN_D6:    dc.b 'All your methods must return either GWVA_PRGRET_CONSUMED or GWVA_PRGRET_NOT_CONSUMED in register d6',0
  602. GWVA_ASCII_ERROR_OBJ_HANDLE:    dc.b 'An objet must have his handle allocated before calling any of its methods (including CREATE).',0
  603. GWVA_ASCII_ERROR_NO_DELETED:    dc.b 'The DELETE method of the APP object must do a PTERM or a PTERMRES (GEMDOS calls)',0
  604. GWVA_ASCII_ERROR_SEARCH_EXEC:    dc.b 'You called the GWVA_ROOT_PRG_SEARCH_EXEC_METHOD function with an invalid activation mode.',0
  605. GWVA_ASCII_ERROR_METHOD_CONSUMED:    dc.b 'This method should not return anything but GWVA_PRGRET_CONSUMED in register d6.',0
  606. GWVA_ASCII_ERROR_DEFAULT_PTR:    dc.b 'The default method list pointer of the object must be set before calling any method.',0
  607. GWVA_ASCII_ERROR_LOCAL_PTR:    dc.b 'The local method list pointer of the object must not be set to 0 but to GWVA_OBJ_CTE_METHODLISTPTR_UNDEF.',0
  608. GWVA_ASCII_ERROR_SUBCLASS_CALL:    dc.b 'Only methods of an object are allowed to use activation GWVA_MODE_EXEC_METHOD_ENCAPSULATED_CLASS mode to call methods of this object.',0
  609. GWVA_ASCII_ERROR_NO_LOWER_CLASS:    dc.b 'There is no more encapsulated class. You cannot use activation GWVA_MODE_EXEC_METHOD_ENCAPSULATED_CLASS mode.',0
  610. GWVA_ASCII_ERROR_NO_SUBCLASS_METHOD:dc.b 'The called method does not exist in lower subclass.',0
  611. GWVA_ASCII_ERROR_METHOD_UNKNOW_COMMAND:dc.b 'You gave an unknow command in your method list.',0
  612. GWVA_ASCII_ERROR_MENU_SELECTED:    dc.b 'Menu selected occurs while GWVA_WIND_OLBIT_AMENU=0 or GWVA_WIND_OBJ_MENU_SPEC_PTR=0.',0
  613. GWVA_ASCII_ERROR_MENU_PTR_NULL:    dc.b 'A keyboard event arrived on a menu with VA_WIND_OLBIT_AMENU set and GWVA_WIND_OBJ_MENU_SPEC_PTR=0.',0
  614. GWVA_ASCII_ERROR_ICON_PTR_NULL:    dc.b 'The method ICONIFY of a window has been called with GWVA_WIND_OBJ_ICON_WIND_PTR=0',0
  615. GWVA_ASCII_ERROR_BAD_OBJECT_METHOD:    dc.b 'This method cannot be called for the WAPP object: bad (default)method list or bsr.',0
  616. GWVA_ASCII_ERROR_NO_DEFAULT_LIST:    dc.b 'This CLASS cannot work because it has no default Method list !',0
  617. GWVA_ASCII_ERROR_NO_INHERITANCE:    dc.b 'This CLASS has no heritance (even NULL) defined !',0
  618. GWVA_ASCII_ERROR_RSC_ON_ODD_ADDRESS:dc.b 'Your ressource file you want to relocate is located at an odd address : add an ''even'' instruction before your include.',0
  619. GWVA_ASCII_ERROR_REGISTER_BUTTON:    dc.b 'Only created object can register the button.',0
  620. GWVA_ASCII_ERROR_BUTTON_ALREADY_REGISTER:    dc.b 'The button is already register.',0
  621. GWVA_ASCII_ERROR_REGISTER_TIMER:    dc.b 'Only created object can register the timer.',0
  622. GWVA_ASCII_ERROR_NO_MORE_TIMER:    dc.b 'There is not enough timer defined. Increase GWVA_ROOT_CTE_MAX_TIMER.',0
  623. GWVA_ASCII_ERROR_REGISTER_MZONE:    dc.b 'Only created object can register a mouse zone.',0
  624. GWVA_ASCII_ERROR_NO_MORE_MZONE:    dc.b 'There is not enough mouse zone defined. Increase GWVA_ROOT_CTE_MAX_MOUSEZONE.',0
  625. GWVA_ASCII_ERROR_RETURN_D7:    dc.b 'The d7 register gives you the returning error code.',0
  626. GWVA_ASCII_ERROR_VISUAL_EVENT:    dc.b 'Only BEFORE and AFTER event methods can be called by the GWVA_EXEC_VISUAL_EVENT macro.',0
  627. GWVA_ASCII_ERROR_BEFORE_AFTER:    dc.b 'BEFORE and AFTER event methods can only be called by the GWVA_EXEC_VISUAL_EVENT macro.',0
  628.  
  629. GWVA_ASCI_ERROR_CREATE_RETURN:    dc.b 'V.A. INTERNAL ERROR : The CREATE method of the APP objet return an invalid error code.',0
  630.  
  631.     endc    ; ifd OPT_GWVA_DEBUG_ERROR
  632.  
  633.  even
  634.  
  635.     ifd MDL_WIND_MENU
  636.  
  637. GWVA_ROOT_MENU_TREE_ARROWS:    ; objet pour les fleches dans les menu des fenetres
  638.     dc.w -1,1,2,G_BOX
  639.     dc.w 0,$0000
  640.     dc.l $00FF1100
  641.     dc.w 0,0,4,$0201
  642.     
  643.     dc.w 2,-1,-1,G_BOXCHAR
  644.     dc.w 0,0
  645.     dc.l (4<<24)|$00001100
  646.     dc.w 0,0,2,$0201
  647.  
  648.     dc.w 0,-1,-1,G_BOXCHAR
  649.     dc.w $0020,0
  650.     dc.l (3<<24)|$00FF1100
  651.     dc.w 2,0,2,$0201
  652.  
  653.     endc    ; ifd MDL_WIND_MENU
  654.  
  655. *-----------------------------------------------------------------------------*
  656.  
  657. GWVA_ROOT_CLASS_INHERITANCE_LIST:
  658.     GWVA_OBJ_STRUCT_INHERITANCE GWVA_CLASS_WIND            ; 1
  659.     GWVA_OBJ_STRUCT_INHERITANCE GWVA_CLASS_WIND.APP,GWVA_CLASS_WIND    ; 2
  660.     GWVA_OBJ_STRUCT_INHERITANCE GWVA_CLASS_WIND.RSC,GWVA_CLASS_WIND    ; 3
  661.     GWVA_OBJ_STRUCT_INHERITANCE GWVA_CLASS_WIND.RSC.FORM,GWVA_CLASS_WIND.RSC ; 4
  662.     GWVA_OBJ_STRUCT_INHERITANCE GWVA_CLASS_WIND.RSC.POPUP,GWVA_CLASS_WIND.RSC ; 5
  663.     GWVA_OBJ_STRUCT_INHERITANCE GWVA_CLASS_WIND.BITMAP,GWVA_CLASS_WIND    ; 6
  664.     GWVA_OBJ_STRUCT_INHERITANCE GWVA_CLASS_WIND.TEXT,GWVA_CLASS_WIND    ; 7
  665.     GWVA_OBJ_STRUCT_INHERITANCE GWVA_CLASS_MENU            ; 8
  666.     ifd MDL_WIND_FORM
  667.      GWVA_OBJ_STRUCT_INHERITANCE GWVA_CLASS_FORM            ; 9
  668.      GWVA_OBJ_STRUCT_INHERITANCE GWVA_CLASS_FORM.BUTTON,GWVA_CLASS_FORM    ; 10
  669.      GWVA_OBJ_STRUCT_INHERITANCE GWVA_CLASS_FORM.MENU_POPUP,GWVA_CLASS_FORM    ; 11
  670.      GWVA_OBJ_STRUCT_INHERITANCE GWVA_CLASS_FORM.RADIO_BUTTON,GWVA_CLASS_FORM    ; 12
  671.      GWVA_OBJ_STRUCT_INHERITANCE GWVA_CLASS_FORM.SLIDER,GWVA_CLASS_FORM        ; 13
  672.      GWVA_OBJ_STRUCT_INHERITANCE GWVA_CLASS_FORM.CLICK_EQUIV,GWVA_CLASS_FORM        ; 14
  673.      GWVA_OBJ_STRUCT_INHERITANCE GWVA_CLASS_FORM.PROGRESS_BAR,GWVA_CLASS_FORM    ; 15
  674.      GWVA_OBJ_STRUCT_INHERITANCE GWVA_CLASS_FORM.TEXT,GWVA_CLASS_FORM        ; 16
  675. *     GWVA_OBJ_STRUCT_INHERITANCE GWVA_CLASS_FORM.TEXT.CHAINED_TEXT,GWVA_CLASS_FORM.TEXT    ; 17
  676.     endc    ; ifd MDL_WIND_FORM
  677. GWVA_ROOT_CLASS_INHERITANCELIST_LINK:
  678.     GWVA_OBJ_STRUCT_INHERITANCE_END_LIST
  679.  
  680. GWVA_ROOT_DEFAULT_METHODLIST_LIST:
  681.     GWVA_OBJ_STRUCT_CLASSMETHOD GWVA_CLASS_WIND.APP,GWVA_WAPP_DEFAULT_METHODLIST
  682.  
  683.     ifd MDL_EVENTS
  684.      GWVA_OBJ_STRUCT_CLASSMETHOD GWVA_CLASS_WIND,GWVA_WIND_DEFAULT_METHODLIST
  685.     ifd MDL_WIND_RSC
  686.      GWVA_OBJ_STRUCT_CLASSMETHOD GWVA_CLASS_WIND.RSC,GWVA_WRSC_DEFAULT_METHODLIST
  687.      ifd MDL_WIND_FORM
  688.       GWVA_OBJ_STRUCT_CLASSMETHOD GWVA_CLASS_WIND.RSC.FORM,GWVA_WFORM_DEFAULT_METHODLIST
  689.      endc    ; ifd MDL_WIND_FORM
  690.      ifd MDL_WIND_RSC_POPUP
  691.       GWVA_OBJ_STRUCT_CLASSMETHOD GWVA_CLASS_WIND.RSC.POPUP,GWVA_WRSCPOPUP_DEFAULT_METHODLIST
  692.      endc    ; ifd MDL_WIND_RSC_POPUP
  693.     endc    ; ifd MDL_WIND_RSC
  694.     ifd MDL_WIND_BITMAP
  695.      GWVA_OBJ_STRUCT_CLASSMETHOD GWVA_CLASS_WIND.BITMAP,GWVA_WBITM_DEFAULT_METHODLIST
  696.     endc    ; ifd MDL_WIND_BITMAP
  697.     ifd MDL_WIND_TEXT
  698.      GWVA_OBJ_STRUCT_CLASSMETHOD GWVA_CLASS_WIND.TEXT,GWVA_WTEXT_DEFAULT_METHODLIST
  699.     endc    ; ifd MDL_WIND_TEXT
  700.     ifd MDL_MENU
  701.      GWVA_OBJ_STRUCT_CLASSMETHOD GWVA_CLASS_MENU,GWVA_MENU_DEFAULT_METHODLIST
  702.     endc    ; ifd MDL_MENU
  703.     ifd MDL_WIND_FORM
  704.      GWVA_OBJ_STRUCT_CLASSMETHOD GWVA_CLASS_FORM,GWVA_FORM_DEFAULT_METHODLIST
  705.      ifd MDL_FORM_BUTTON
  706.       GWVA_OBJ_STRUCT_CLASSMETHOD GWVA_CLASS_FORM.BUTTON,GWVA_FBUTTON_DEFAULT_METHODLIST
  707.      endc    ; ifd MDL_FORM_BUTTON
  708.      ifd MDL_FORM_PROGRESS
  709.       GWVA_OBJ_STRUCT_CLASSMETHOD GWVA_CLASS_FORM.PROGRESS_BAR,GWVA_FPROGRESS_BAR_DEFAULT_METHODLIST
  710.      endc    ; ifd MDL_FORM_PROGRESS
  711.      ifd MDL_FORM_MENU_POPUP
  712.       GWVA_OBJ_STRUCT_CLASSMETHOD GWVA_CLASS_FORM.MENU_POPUP,GWVA_FMENU_POPUP_DEFAULT_METHODLIST
  713.      endc    ; ifd MDL_FORM_MENU_POPUP
  714.      ifd MDL_FORM_RADIO_BUTTON
  715.       GWVA_OBJ_STRUCT_CLASSMETHOD GWVA_CLASS_FORM.RADIO_BUTTON,GWVA_FRADIO_BUTTON_DEFAULT_METHODLIST
  716.      endc    ; ifd MDL_FORM_RADIO_BUTTON
  717.      ifd MDL_FORM_SLIDER
  718.       GWVA_OBJ_STRUCT_CLASSMETHOD GWVA_CLASS_FORM.SLIDER,GWVA_FSLIDER_DEFAULT_METHODLIST
  719.      endc    ; ifd MDL_FORM_SLIDER
  720.      ifd MDL_FORM_CLICK_EQUIV
  721.       GWVA_OBJ_STRUCT_CLASSMETHOD GWVA_CLASS_FORM.CLICK_EQUIV,GWVA_FCLICK_EQUIV_DEFAULT_METHODLIST
  722.      endc    ; ifd MDL_FORM_CLICK_EQUIV
  723.      ifd MDL_FORM_TEXT
  724.       GWVA_OBJ_STRUCT_CLASSMETHOD GWVA_CLASS_FORM.TEXT,GWVA_FTEXT_DEFAULT_METHODLIST
  725.      endc    ; ifd MDL_FORM_TEXT
  726.     endc    ; ifd MDL_WIND_FORM
  727.     endc    ; ifd MDL_EVENTS
  728. GWVA_ROOT_DEFAULT_METHODLIST_LINK:
  729.     GWVA_OBJ_STRUCT_CLASSMETHOD_END_LIST
  730.  
  731. GWVA_ROOT_CLASS_INHERITANCE_NEXT_LINK:    dc.l GWVA_ROOT_CLASS_INHERITANCELIST_LINK
  732. GWVA_ROOT_DEFAULT_METHODLIST_NEXT_LINK:    dc.l GWVA_ROOT_DEFAULT_METHODLIST_LINK
  733.  
  734. *--------------------------------------------------------------------------*
  735.  
  736.     BSS
  737. GWVA_ROOT_STACK_TOP:        ds.b GWVA_ROOT_CTE_STACK_SIZE
  738. GWVA_ROOT_STACK:        ds.l 1
  739. GWVA_ROOT_STACK_SAVE_CMP_PTR:    ds.l 1    ; pointeur sur le sommet de la pile à chaque event_multi (warning)
  740.  
  741. GWVA_ROOT_PTR_WAPP:        ds.l 1    ; pointeur sur l'objet application principale
  742. GWVA_ROOT_BASE_PAGE:        ds.l 1
  743. GWVA_ROOT_CMD_LINE_PTR:        ds.l 1
  744. GWVA_ROOT_CMD_LINE_SIZE:    ds.w 1
  745.  
  746.     ifd MDL_GEM
  747. GWVA_ROOT_IS_ACC_PRG:        ds.w 1    ; 0 : acc, 1 : app
  748.     endc    ; ifd MDL_GEM
  749.  
  750. GWVA_ROOT_DTA:        ds.b L_DTA
  751. GWVA_ROOT_STARTED_PATH:        ds.b GWVA_ROOT_MAX_PATH_LENGTH
  752.  
  753. GWVA_ROOT_SEARCH_IN_OUT:    ds.l 2    ; le paramètre pour la recherche COOKIE,XBRA
  754.  
  755. GWVA_ROOT_SYSVAR_BOOT_DEVICE:    ds.w 1    ; lecteur de boot : 0=A, 1=B, 2=C ...
  756. GWVA_ROOT_SYSVAR_TOS_VERSION:    ds.w 1    : ex. : $0404
  757.  
  758.     ifd LIB_SEARCH_SYSTEM_COOKIES
  759. GWVA_ROOT_COOKIE_COPRO:        ds.w 1    ; 0=aucun 1=68881 2=68882
  760. GWVA_ROOT_COOKIE_MINT:        ds.w 1    ; 0 ou la version
  761. GWVA_ROOT_COOKIE_MAGIC:        ds.l 1    ; 0 ou un pointeur sur la structure de MagiC
  762. GWVA_ROOT_COOKIE_GENEVA:    ds.l 1    ; 0 ou un pointeur sur la structure de Geneva
  763.  
  764. GWVA_ROOT_COOKIE_SELECTRIX_PTR:    ds.l 1    ; Selctrix base adress (0 si pas sélectrix)
  765. GWVA_ROOT_COOKIE_SELECTRIX_COMM_WORD:ds.l 1    ; ad. du word communication
  766. GWVA_ROOT_COOKIE_SELECTRIX_OUT_COUNT:ds.l 1    ; ad. du compteur sortie
  767. GWVA_ROOT_COOKIE_SELECTRIX_OUT_PTR:    ds.l 1    ; ad. du pointeur sortie
  768.     endc    ; ifd LIB_SEARCH_SYSTEM_COOKIES
  769.  
  770.     ifd MDL_GEM
  771.  
  772. GWVA_ROOT_TEXT_WIDTH:        ds.w 1
  773. GWVA_ROOT_TEXT_HEIGHT:        ds.w 1
  774. GWVA_ROOT_CELL_WIDTH:        ds.w 1
  775. GWVA_ROOT_CELL_HEIGHT:        ds.w 1
  776.  
  777. GWVA_ROOT_SYSTEM_LARGEFONT_HEIGHT:    ds.w 1
  778. GWVA_ROOT_SYSTEM_SMALLFONT_HEIGHT:    ds.w 1
  779. GWVA_ROOT_SYSTEM_LARGEFONT_CELL_WIDTH:    ds.w 1
  780. GWVA_ROOT_SYSTEM_LARGEFONT_CELL_HEIGHT:    ds.w 1
  781. GWVA_ROOT_SYSTEM_SMALLFONT_CELL_WIDTH:    ds.w 1
  782. GWVA_ROOT_SYSTEM_SMALLFONT_CELL_HEIGHT:    ds.w 1
  783.  
  784. GWVA_ROOT_SYSTEM_AES_3D_HBORDER:    ds.w 1
  785. GWVA_ROOT_SYSTEM_AES_3D_VBORDER:    ds.w 1
  786.  
  787. GWVA_ROOT_VDI_WORKSTATION:    ds.w 57
  788. GWVA_ROOT_VDI_WORKSTATION_EXTD:    ds.w 57
  789.  
  790.     ifd MDL_RELOCATE_RSC
  791. GWVA_ROOT_ADD_MALLOC_RSC_ICN:    ds.l 2
  792.     endc
  793.  
  794. ; Utilisé par RELOCATE
  795. GWVA_ROOT_MFDB_SRC:        ds.l 1    ; buffers pour vro_cpyfrm & vrt_ & vr_trnfm
  796.             ds.w 8
  797. GWVA_ROOT_MFDB_DEST:        ds.l 1
  798.             ds.w 8
  799.  
  800.     ifd MDL_EVENTS
  801. GWVA_ROOT_ACC_NUMBER:        ds.w 1    ; pas d'acc sans events
  802.  
  803. GWVA_ROOT_EVENT_BITS:        ds.w 1
  804.  
  805. GWVA_ROOT_KEYPRESS_OBJ_PTR:    ds.l 1    ; pointeur sur l'objet qui demande à recevoir les touches
  806. GWVA_ROOT_CLICK_OBJ_PTR:    ds.l 1    ; pointeur sur l'objet qui demande à recevoir les clicks souris
  807. GWVA_ROOT_CLICK_METHOD:        ds.l 1    ; méthode devant être appelé lors de la réception d'un click souris
  808. GWVA_ROOT_CLICK_LOCK:        ds.w 1    ; 0 unlock, 1 lock (wind_update #BEG_MCTRL)
  809. GWVA_ROOT_MESSAGE_OBJ_PTR:    ds.l 1    ; pointeur sur l'objet qui demande à recevoir le messages GEM
  810.  
  811. GWVA_ROOT_TIMER_COUNT:        ds.l 1    ; valeur du timer GEM en mili-secondes(<> 0 pour être actif)
  812.     ifge GWVA_ROOT_CTE_MAX_TIMER-1
  813. GWVA_ROOT_TIMER_LIST:        ds.b GWVA_ROOT_OBJ_TIMER_STRUCT_LENGTH*GWVA_ROOT_CTE_MAX_TIMER    ; Liste des objets voulant accéder au Timer
  814.     endc    ; ifge GWVA_ROOT_CTE_MAX_TIMER-1
  815.  
  816. GWVA_ROOT_M1_ACTIVATED:        ds.w 1    ; 1 : Zone valide
  817. GWVA_ROOT_M1FLAG:        ds.w 1    ; entrée de zone (0) sortie (1)
  818. GWVA_ROOT_M1X:        ds.w 1    ; position et taille de la zone (<> 0 pour être actif)
  819. GWVA_ROOT_M1Y:        ds.w 1
  820. GWVA_ROOT_M1W:        ds.w 1
  821. GWVA_ROOT_M1H:        ds.w 1
  822. GWVA_ROOT_M2_ACTIVATED:        ds.w 1    ; 1 : Zone valide
  823. GWVA_ROOT_M2FLAG:        ds.w 1    ; entrée de zone (0) sortie (1)
  824. GWVA_ROOT_M2X:        ds.w 1    ; position et taille de la zone (<> 0 pour être actif)
  825. GWVA_ROOT_M2Y:        ds.w 1
  826. GWVA_ROOT_M2W:        ds.w 1
  827. GWVA_ROOT_M2H:        ds.w 1
  828.     ifge GWVA_ROOT_CTE_MAX_MOUSEZONE-1
  829. GWVA_ROOT_MOUSEZONE_LIST:    ds.b GWVA_ROOT_OBJ_MOUSEZONE_STRUCT_LENGTH*GWVA_ROOT_CTE_MAX_MOUSEZONE    ; Liste des objets voulant accéder à une MOUSE_ZONE
  830.     endc    ; ifge GWVA_ROOT_CTE_MAX_MOUSEZONE-1
  831.  
  832. GWVA_ROOT_EVNT_MULTI_MX:    ds.w 1    ; position souris
  833. GWVA_ROOT_EVNT_MULTI_MY:    ds.w 1
  834. GWVA_ROOT_EVNT_MULTI_MB:    ds.w 1    ; état des boutons souris
  835. GWVA_ROOT_EVNT_MULTI_KS:    ds.w 1    ; état des touches spéciales
  836. GWVA_ROOT_EVNT_MULTI_KC:    ds.w 1    ; touche
  837. GWVA_ROOT_EVNT_MULTI_MC:    ds.w 1    ; nbre de clik souris
  838. GWVA_ROOT_MSG_BUF:        ds.b L_BMSG    ; pour event-multi
  839. GWVA_ROOT_MSG_EXT_BUF:        ds.b 256    ; pour appl_read - appl_write
  840.  
  841.     endc    ; ifd MDL_EVENTS
  842.  
  843.     ifd MDL_COLORS
  844. GWVA_ROOT_DESK_PALETTE:        ds.w 256*3    ; palette RGB VDI (vq_color)
  845. GWVA_ROOT_TMP_PALETTE:        ds.w 256*3    ; palette RGB VDI (vq_color)
  846.     endc    ; ifd MDL_COLORS
  847.  
  848.     endc    ; ifd MDL_GEM
  849.  
  850.     TEXT
  851.  
  852. *--------------------------------------------------------------------------*
  853.